package c18类加载和反射;

import java.lang.reflect.*;

public class s24利用反射操作数组 {

	public static void main(String[] args) {
		int len = 5;
		/** 1. 创建元素类型是基本类型的数组对象 */
		Object oi = Array.newInstance(Integer.TYPE, len);
		System.err.println("数组长度：" + Array.getLength(oi));//数组长度
		for (int i = 0; i < len; i++) {
			//设置数组元素值
			Array.setInt(oi, i, i);
//				Array.set(oi, i, new Integer(i));//这样也可以，不过推荐用上面的方法~
		}
		for (int i = 0; i < len; i++) {
			//获取数组元素值
			System.err.println(Array.getInt(oi, i));
//				System.err.println(Array.get(oi, i));//这样也可以，不过推荐用上面的方法~
		}

		/** 2. 创建元素类型是包装类型的数组对象 */
		Object oa = Array.newInstance(Integer.class, len);//后者为可变数量形参
		System.err.println("数组长度：" + Array.getLength(oa));
		for (int i = 0; i < len; i++) {
			//设置数组元素值
//				Array.setInt(oa, i, i);//用setInt会出异常！
			Array.set(oa, i, new Integer(i));
		}
		for (int i = 0; i < len; i++) {
			//获取数组元素值
//				System.err.println(Array.getInt(oa, i));//用getInt会出异常！
			System.err.println(Array.get(oa, i));
		}

	}

}
